# 定义编译器
CXX := g++

# 定义编译选项
CXXFLAGS := -std=c++11 -I.

# 定义需要的源文件
SRCS := $(wildcard *.cpp)

# 定义目标文件
OBJS := $(SRCS:.cpp=.o)

# 定义可执行文件
EXECUTABLES := $(SRCS:.cpp=)

# 默认目标
all: $(EXECUTABLES)

# 链接对象文件生成可执行文件
%: %.o
	$(CXX) $(CXXFLAGS) $< -o $@

# 编译源文件生成对象文件
%.o: %.cpp Function.hpp EquationSolver.hpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

# 运行所有的测试
run: all
	@for exe in $(EXECUTABLES); do \
		echo "Running $$exe..."; \
		./$$exe; \
	done
	gnuplot -persistent plot1.gp
	gnuplot -persistent plot2.gp
# 编译报告
report: Report.pdf

# 编译LaTeX文档
Report.pdf: Report.tex
	pdflatex Report.tex

# 清理生成的文件
clean:
	rm -f $(OBJS) $(EXECUTABLES) Report.aux Report.bbl Report.blg Report.log Report.pdf *.dat *.gp

.PHONY: all run report clean
